JDB (Java Debugger) হল একটি টুল যা Java প্রোগ্রামের ডিবাগিংয়ের জন্য ব্যবহৃত হয়। এটি Java প্রোগ্রামটি রান করার সময় breakpoint, watchpoint, এবং অন্যান্য ডিবাগিং টুল ব্যবহার করে কোডে ত্রুটি অনুসন্ধান করতে সাহায্য করে।
Watchpoints এমন একটি ডিবাগিং ফিচার, যা আপনাকে ট্র্যাক করতে সাহায্য করে কখন একটি নির্দিষ্ট ভেরিয়েবল বা প্রপার্টির মান পরিবর্তিত হয়। আপনি যখন কোনো ভেরিয়েবল বা প্রপার্টি পরিবর্তিত হওয়ার সময় ট্র্যাক করতে চান, তখন Watchpoint ব্যবহার করা হয়।
1. Watchpoints কি?
Watchpoint হল এমন একটি ব্রেকপয়েন্ট যা একটি নির্দিষ্ট ভেরিয়েবল বা প্রপার্টির মান পরিবর্তিত হলে ট্রিগার হয়। এর মাধ্যমে আপনি কোডের মধ্যে কোনো ভেরিয়েবলের বা প্রপার্টির মান পরিবর্তন হওয়া ট্র্যাক করতে পারেন, যাতে আপনি দেখতে পারেন কেন বা কখন ভেরিয়েবলটি পরিবর্তিত হচ্ছে। এটি বিশেষভাবে উপকারী যখন আপনি ডেটা পরিবর্তনের কারণ বুঝতে চান বা ডেটার অস্বাভাবিক পরিবর্তন শনাক্ত করতে চান।
Watchpoint এর সুবিধাসমূহ:
- একটি নির্দিষ্ট ভেরিয়েবলের মান পরিবর্তিত হলে এর অবস্থান ট্র্যাক করা।
- ভেরিয়েবলটি কোথায় এবং কীভাবে পরিবর্তিত হচ্ছে তা জানার মাধ্যমে ডিবাগিং প্রক্রিয়া সহজ করা।
- ডেটার অবস্থা যখন পরিবর্তন হচ্ছে তখন সেটি পরীক্ষা করে ত্রুটি সনাক্ত করা।
2. JDB এ Watchpoints ব্যবহার করা
JDB এ Watchpoint সেট করতে হলে, আপনাকে watch কমান্ড ব্যবহার করতে হবে। এটি একটি ভেরিয়েবল বা ফিল্ডের উপর ট্র্যাকিং সেট করে, যা সেই ভেরিয়েবলের মান পরিবর্তন হলে JDB থামিয়ে দেবে এবং তথ্য প্রদান করবে।
Watchpoint সেট করা:
যেকোনো JDB সেশন চলাকালীন, আপনি একটি ভেরিয়েবল বা প্রপার্টির উপর watchpoint সেট করতে পারেন। উদাহরণস্বরূপ, যদি আপনি দেখতে চান counter ভেরিয়েবলের মান কখন পরিবর্তিত হয়, তাহলে নিম্নলিখিত পদ্ধতি ব্যবহার করা হয়:
stop at MyClass:20
watch counter
এই কমান্ডটি MyClass ক্লাসের ২০ নম্বর লাইনে ব্রেকপয়েন্ট সেট করবে এবং counter ভেরিয়েবলটির উপর watchpoint সেট করবে, যা সেই ভেরিয়েবলটির মান পরিবর্তিত হলে থামবে।
উদাহরণ:
ধরা যাক, আপনি একটি প্রোগ্রাম ডিবাগ করছেন যেখানে balance নামক একটি ভেরিয়েবলের মান পরিবর্তন হয় এবং আপনি চান যে যখনই balance ভেরিয়েবলটি পরিবর্তিত হবে, তখন প্রোগ্রাম থামুক। আপনি নিম্নলিখিতভাবে এটি করতে পারেন:
jdb> stop at MyClass:15
jdb> watch balance
এখানে, MyClass ক্লাসের ১৫ নম্বর লাইনে একটি ব্রেকপয়েন্ট তৈরি হবে এবং যখনই balance ভেরিয়েবলের মান পরিবর্তিত হবে, JDB থামবে এবং আপনি এটি পরীক্ষা করতে পারবেন।
3. Watchpoint Command Syntax
- watch variable_name: এটি কোনো ভেরিয়েবলের উপর Watchpoint সেট করে। যখনই সেই ভেরিয়েবলটি পরিবর্তিত হবে, JDB থামবে।
- unwatch variable_name: এটি watchpointটি সরিয়ে ফেলে, অর্থাৎ, ভেরিয়েবলের মান পরিবর্তন ট্র্যাকিং বন্ধ করে দেয়।
- watch field_name: এটি একটি ক্লাসের প্রপার্টি বা ফিল্ডের উপর watchpoint সেট করতে ব্যবহৃত হয়।
4. Watchpoints এর কিছু বাস্তব উদাহরণ
উদাহরণ 1: ভেরিয়েবল পরিবর্তন ট্র্যাক করা
ধরা যাক, আমাদের একটি BankAccount ক্লাস আছে এবং আমরা balance ভেরিয়েবলটির মান পরিবর্তন হওয়া ট্র্যাক করতে চাই:
public class BankAccount {
private double balance;
public void deposit(double amount) {
balance += amount; // Watchpoint here
}
public void withdraw(double amount) {
balance -= amount; // Watchpoint here
}
public double getBalance() {
return balance;
}
}
আপনি JDB-এ এই ভেরিয়েবলটির উপর watchpoint সেট করতে পারেন:
jdb> stop at BankAccount:10
jdb> watch balance
এখানে, balance ভেরিয়েবলটির মান পরিবর্তিত হলে JDB থামবে এবং আপনি এটি পরীক্ষা করতে পারবেন।
উদাহরণ 2: প্রপার্টি পরিবর্তন ট্র্যাক করা
ধরা যাক, আপনি একটি ক্লাসে কোনো প্রপার্টি পরিবর্তন ট্র্যাক করতে চান। যেমন:
public class User {
private String username;
public void setUsername(String username) {
this.username = username; // Watchpoint here
}
}
আপনি JDB-এ username প্রপার্টির উপর watchpoint সেট করতে পারেন:
jdb> stop at User:5
jdb> watch username
এখন, যখনই username পরিবর্তিত হবে, JDB থামবে এবং আপনি ভেরিয়েবলটি পরীক্ষা করতে পারবেন।
5. Watchpoints ব্যবহার করার সময় কিছু টিপস
- Watchpoints শুধুমাত্র ভেরিয়েবল এবং ফিল্ডে প্রয়োগ করা যাবে: আপনি শুধুমাত্র field বা local variable এর ওপর watchpoint ব্যবহার করতে পারবেন।
- পারফরম্যান্সে প্রভাব ফেলতে পারে: Watchpoint যখন থামবে, তখন ডিবাগিং প্রক্রিয়া একটু ধীর হয়ে যেতে পারে। এটি বিশেষভাবে বড় প্রোগ্রাম বা ভেরিয়েবলগুলির উপর watchpoint সেট করলে আরও বেশি প্রভাব ফেলতে পারে।
- Multiple Watchpoints: আপনি একাধিক ভেরিয়েবলের উপর watchpoint সেট করতে পারেন, কিন্তু বেশী watchpoint থাকলে ডিবাগিং জটিল হতে পারে।
- Use of conditional watchpoints: আপনি
watchকমান্ডের সাথে condition ব্যবহার করতে পারেন, যেমন: "when balance > 1000", যাতে কোনো নির্দিষ্ট শর্তে watchpoint ট্রিগার হয়।
সারাংশ
Watchpoints হল JDB ডিবাগিং টুলের একটি শক্তিশালী ফিচার, যা ভেরিয়েবল বা প্রপার্টির মান পরিবর্তন ট্র্যাক করতে ব্যবহৃত হয়। এটি ডিবাগিং প্রক্রিয়াকে আরও কার্যকরী এবং নির্দিষ্ট ত্রুটি খুঁজে বের করার ক্ষেত্রে সহায়তা করে। Watchpoint ব্যবহার করার মাধ্যমে আপনি দেখতে পারেন কিভাবে এবং কখন কোনো ভেরিয়েবল পরিবর্তিত হচ্ছে, যা আপনার কোডে ত্রুটি বা অস্বাভাবিক আচরণ সনাক্ত করতে সাহায্য করবে।
Read more